home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / a56 / examples / pink.lis < prev    next >
File List  |  1995-04-27  |  7KB  |  239 lines

  1.               ; pink noise (1/f) generator
  2.               ; (actually white noise into a one-pole low-pass filter)
  3.               ; based on noise generator from Dr. Bubb but extended to 24 bits
  4.               ; uses simple one-tap recursive filter
  5.               ;
  6.               ; written by: Quinn Jensen (jensenq@qcj.icon.com)
  7.               ;
  8.               
  9.               include "tdsg.a56"
  10.               ;***************************************************************
  11.               ;
  12.               ;       sample rate computations
  13.               ;
  14.               ;***************************************************************
  15.               
  16. P:0076        dot
  17. X:0010                org     x:$10
  18.               
  19. X:0010 000001 NSTATE  dc      1               ;STATE OF NOISE GENERATOR (SHIFT REG)
  20.               
  21.               
  22. Y:0000                org     y:$0
  23.               
  24. P:0076                org     p:dot           ;go back to P-space
  25.               ;
  26.               ; non-interrupt code
  27.               ;
  28.               
  29. P:0076        hf_init
  30. P:0076 44F400         MOVE    #$FEEDEE,X0         ;INITIAL STATE OF NOISE GENERATOR
  31. P:0077 FEEDEE
  32. P:0078 441000         MOVE    X0,X:<NSTATE
  33. P:0079 00000C         rts
  34.               
  35.               ;
  36.               ; fs = 32.552083 kHz
  37.               ;
  38.               
  39. P:007A        hf_comp
  40. P:007A 0D0066         jsr     <saveregs
  41. P:007B 0BF080         jsr     NOISE
  42. P:007C 00008D
  43. P:007D 45F400         move            #.005,x1
  44. P:007E 00A3D7
  45. P:007F 47F400         move            #.990,y1
  46. P:0080 7EB852
  47. P:0081 21C400         move            a,x0
  48. P:0082 4484A1         mpyr    x0,x1,a x:<out_l,x0
  49. P:0083 2000C3         macr    x0,y1,a
  50. P:0084 560400         move            a,x:<out_l
  51. P:0085 0BF080         jsr     NOISE
  52. P:0086 00008D
  53. P:0087 21C400         move            a,x0
  54. P:0088 4485A1         mpyr    x0,x1,a x:<out_r,x0
  55. P:0089 2000C3         macr    x0,y1,a
  56. P:008A 560500         move            a,x:<out_r
  57. P:008B 0D006F         jsr     <restregs
  58. P:008C 00000C         rts
  59.               
  60.               ;       NOISE GENERATION ROUTINE.  THIS ROUTINE USES A 15 BIT SHIFT
  61.               ;       REGISTER LEFT JUSTIFIED IN THE VARIABLE "NSTATE".  AFTER THE STATE
  62.               ;       IS LOADED, IT IS CHECKED TO SEE IF IT IS NORMALIZED.  IF IT IS
  63.               ;       NORMALIZED (TOP TWO BITS ARE DIFFERENT), A 1 IS SET AS THE INPUT
  64.               ;       TO THE SHIFT REGISTER AND THE REGISTER IS SHIFTED AND SAVED.
  65.               ;
  66.               ;         B23     B22                            B9      B8
  67.               ;        ______________________________________________
  68.               ;       | S14   | S13 |                        | S0   |
  69.               ;       |       |     |      . . .             |      |<----------
  70.               ;       |_______|_____|________________________|_______          |
  71.               ;           |      |                                             |
  72.               ;            \    /                                              |
  73.               ;              XOR                                               |
  74.               ;               \_________________________________________________
  75.               ;
  76.               ;
  77.               ;       ASSUMES SCALING MODE IS OFF
  78.               ;
  79. P:008D        NOISE                                   ;DO NOISE GENERATION LOOP
  80. P:008D 56901B         CLR     B       X:<NSTATE,A     ;GET A ZERO IN B
  81. P:008E 44F403         TST     A   #>$000001,X0        ;CHECK A, GET A 1 IN LSB POSITION
  82. P:008F 000001
  83. P:0090 02C048         TNR     X0,B                    ;IF NORMALIZED, THEN XOR=1
  84. P:0091 200010         ADD     B,A                     ;SET LSB
  85. P:0092 200032         ASL     A                       ;SHIFT BITS
  86. P:0093 541000         MOVE    A1,X:<NSTATE            ;SAVE STATE
  87. P:0094 00000C         RTS                             ;RETURN WITH STATE
  88.               
  89.                       END
  90.  
  91. Summary of psect usage
  92.  
  93.                  section seg base last top      used       avail    total
  94. -------------------------------------------------------------------------
  95.  
  96.  
  97. Symbol Table
  98. -------------------------------------
  99.          ssi_int 000061
  100.             ssix 000010
  101.            NOISE 00008D
  102.      init_stereo 000059
  103.            start 000040
  104.            in_rs 000003
  105.            in_ls 000002
  106.             in_r 000001
  107.             in_l 000000
  108.              dot 000076
  109.         mainloop 000060
  110.          hf_comp 00007A
  111.          hf_init 000076
  112.         saveregs 000066
  113.            savey 00000B
  114.            savex 00000A
  115.           saveb2 000009
  116.          saveb10 000008
  117.           savea2 000007
  118.          savea10 000006
  119.         restregs 00006F
  120.            out_r 000005
  121.            out_l 000004
  122.           NSTATE 000010
  123.           m_scl1 00000F
  124.           m_scl0 00000E
  125.            m_scl 00C000
  126.           m_ssl1 00000D
  127.           m_ssl0 00000C
  128.            m_ssl 003000
  129.           m_hpl1 00000B
  130.           m_hpl0 00000A
  131.            m_hpl 000C00
  132.           m_ibl2 000005
  133.           m_ibl1 000004
  134.           m_ibl0 000003
  135.            m_ibl 000038
  136.           m_ial2 000002
  137.           m_ial1 000001
  138.           m_ial0 000000
  139.            m_ial 000007
  140.            m_ipr 00FFFF
  141.            m_rdf 000007
  142.            m_tde 000006
  143.            m_roe 000005
  144.            m_tue 000004
  145.            m_rfs 000003
  146.            m_tfs 000002
  147.            m_if1 000001
  148.            m_if0 000000
  149.             m_if 000002
  150.           m_srie 00000F
  151.           m_stie 00000E
  152.            m_sre 00000D
  153.            m_ste 00000C
  154.            m_mod 00000B
  155.            m_gck 00000A
  156.            m_syn 000009
  157.            m_fsl 000008
  158.           m_sckd 000005
  159.           m_scd2 000004
  160.           m_scd1 000003
  161.           m_scd0 000002
  162.            m_scd 00001C
  163.            m_of1 000001
  164.            m_of0 000000
  165.             m_of 000003
  166.            m_psr 00000F
  167.            m_wl1 00000E
  168.            m_wl0 00000D
  169.             m_wl 006000
  170.             m_dc 001F00
  171.             m_pm 0000FF
  172.            m_tsr 00FFEE
  173.             m_sr 00FFEE
  174.            m_crb 00FFED
  175.            m_cra 00FFEC
  176.             m_tx 00FFEF
  177.             m_rx 00FFEF
  178.            m_tcm 00000F
  179.            m_rcm 00000E
  180.            m_scp 00000D
  181.            m_cod 00000C
  182.             m_cd 000FFF
  183.             m_r8 000007
  184.             m_fe 000006
  185.             m_pe 000005
  186.             m_or 000004
  187.           m_idle 000003
  188.           m_rdrf 000002
  189.           m_tdre 000001
  190.           m_trne 000000
  191.           m_tmie 00000D
  192.            m_tie 00000C
  193.            m_rie 00000B
  194.           m_ilie 00000A
  195.             m_te 000009
  196.             m_re 000008
  197.           m_woms 000007
  198.            m_rwi 000006
  199.           m_wake 000005
  200.            m_sbk 000004
  201.           m_wds2 000002
  202.           m_wds1 000001
  203.           m_wds0 000000
  204.            m_wds 000003
  205.           m_sccr 00FFF2
  206.            m_ssr 00FFF1
  207.            m_scr 00FFF0
  208.           m_stxa 00FFF3
  209.           m_stxh 00FFF6
  210.           m_stxm 00FFF5
  211.           m_stxl 00FFF4
  212.           m_srxh 00FFF6
  213.           m_srxm 00FFF5
  214.           m_srxl 00FFF4
  215.            m_dma 000007
  216.            m_hf1 000004
  217.            m_hf0 000003
  218.             m_hf 000018
  219.            m_hcp 000002
  220.           m_htde 000001
  221.           m_hrdf 000000
  222.            m_hf3 000004
  223.            m_hf2 000003
  224.           m_hcie 000002
  225.           m_htie 000001
  226.           m_hrie 000000
  227.            m_htx 00FFEB
  228.            m_hrx 00FFEB
  229.            m_hsr 00FFE9
  230.            m_hcr 00FFE8
  231.            m_pcd 00FFE5
  232.          m_pcddr 00FFE3
  233.            m_pcc 00FFE1
  234.            m_pbd 00FFE4
  235.          m_pbddr 00FFE2
  236.            m_pbc 00FFE0
  237.            m_bcr 00FFFE
  238. errors=0
  239.